package filter;

//	Authentication filters 身份验证过滤器
//	 data compression filters 数据压缩过滤器
//	encryption filters  加密过滤器
//	 触发资源访问事件过滤器
//	 图像转换过滤器
//	 日志记录和审核过滤器
//	 MIME-TYPE 链过滤器
//	 标记化过滤器
//	 XSL/T 过滤器，转换XML内容
//


import javax.servlet.*;
import java.io.IOException;
import java.util.Date;

/**
 * 过滤器被部署在web.xml中，然后映射到符合的servlet名称或者url模式。
 * 当web容器启动web引用的时候，他会为你在部署描述符中生命的每一个过滤器创建一个实例，
 * 过滤器执行的顺序是按照他们部署描述符中声明的顺序来的。 也就是从上到下。
 *
 */
public class FilterExamples  implements Filter {

	@Override
	public void init(FilterConfig config) throws ServletException {
		// 获取初始化参数
		String site = config.getInitParameter("Site");
		// 输出初始化参数
		System.out.println("网站名称: " + site);
		// 获取初始化参数
		String testParam = config.getInitParameter("test-param");

		// 输出初始化参数
		System.out.println("Test Param: " + testParam);
	}

	@Override
	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
		// 获取客户机的 IP 地址
		String ipAddress = servletRequest.getRemoteAddr();

		// 记录 IP 地址和当前时间戳
		System.out.println("IP "+ ipAddress + ", Time "
				+ new Date().toString());

		System.out.println("filterExamples do filter");
		// 把请求传回过滤链
		filterChain.doFilter(servletRequest,servletResponse);
	}

	@Override
	public void destroy() {
		/* 在 Filter 实例被 Web 容器从服务移除之前调用 */
	}
}
